
#include "nane/FileArchiveSystem/FileArchiveSystemImpl_.h"
#include "nane/FileArchiveSystem/FileArchiveImpl_.h"

#include "nane/core/assert.h"

namespace nane
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    FileArchiveSystem::Implementation::Implementation()
        : SubSystem<IFileArchiveSystem>::Implementation("IFileArchiveSystem")
    {

    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    FileArchiveSystem::Implementation::~Implementation()
    {

    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void nane::FileArchiveSystem::Implementation::Release( FileArchive::Implementation* _fileArchiveImpl )
    {
        NANE_ASSERT_R( interface != NULL, "FileArchiveSystem must be initialized" );
        NANE_ASSERT_R( this == _fileArchiveImpl->creator, "FileArchive must be valid" );
        IFileArchive* fileArchiveInterface = _fileArchiveImpl->interface;
        delete _fileArchiveImpl;
        interface->ReleaseArchive(fileArchiveInterface);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane
